﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPos.Entity;
using AcadPosApp.Utilidades;
using System.Data;
using Microsoft.Reporting.WebForms;

namespace AcadPosApp.Cadastros
{
    public partial class CadastroAluno : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregarEstados();
                //listarAnos();
                pnlDocumetos.Visible = false;
                TxtPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
            }
            if (gvwPesquisa.Visible == true && gvwPesquisa.SelectedIndex > -1)
                btnTitulacao.Visible = true;
            else
                btnTitulacao.Visible = false;
        }

        private void carregarEstados()
        {
            ddlUFCad.DataSource = ddlEstado.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlUFCad.DataTextField = ddlEstado.DataTextField = "ESTADO";
            ddlUFCad.DataValueField = ddlEstado.DataValueField = "ID_ESTADO";
            ddlEstado.DataBind();
            ddlUFCad.DataBind();
            ddlEstado.SelectedValue = "1";
            ddlUFCad.SelectedValue = "1";

        }

        protected void btnIncluir_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = true;
            pnlConsulta.Enabled = false;
            pnlDocumetos.Visible = false;
            TrustX.Util.UtilForm.LimparCampos(pnlEdicao);
            btnConfirmar.CommandName = "Incluir";
            TxtNacionalidade.Text = "BRASILEIRA";
            carregarEstados();
            //listarAnos();
            gvwPesquisa.SelectedIndex = -1;
        }

        private void carregarAlunos()
        {
            string pNome = TxtPesquisa.Text;
            int pCodEstado = Convert.ToInt32(ddlEstado.SelectedValue);
            gvwPesquisa.DataSource = ControlClass.CNAluno.listarAlunosXEstado(pNome, pCodEstado);
            gvwPesquisa.DataBind();
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = false;
            pnlConsulta.Enabled = true;
            pnlDocumetos.Visible = false;
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            carregarAlunos();
            pnlEdicao.Visible = false;
            pnlDocumetos.Visible = false;
            btnIncluirDocumentosPend.Visible = false;
            btnTitulacao.Visible = false;
        }

        protected void gvwPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnIncluirDocumentosPend.Visible = true;
            if (gvwPesquisa.SelectedIndex > -1)
                btnTitulacao.Visible = true;
            else
                btnTitulacao.Visible = false;
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                Aluno alu = new Aluno();
                string usuario = User.Identity.Name;
                //alu.AnoConclusao = Convert.ToInt32(ddlAnoConclusao.SelectedValue);
                alu.Bairro = TxtBairro.Text;
                alu.Celular = TxtCel.Text;
                alu.Cep = TxtCEP.Text;
                alu.Cidade = TxtCidade.Text;
                alu.CodEstado = Convert.ToInt32(ddlUFCad.SelectedValue);
                alu.Complemento = TxtComplemento.Text;
                alu.Cpf = TxtCPF.Text;
                //alu.CursoGraduacao = TxtCursoGraducao.Text;
                if (TxtDataExpedicao.Text != string.Empty)
                    if (Convert.ToDateTime(TxtDataExpedicao.Text) > DateTime.Now.Date)
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Data de expedição não pode ser maior que a data atual!"), true);
                        return;
                    }
                    else
                        alu.DataExpedicaoRg = Convert.ToDateTime(TxtDataExpedicao.Text);
                else
                    alu.DataExpedicaoRg = DateTime.MinValue;
                alu.Dddcel = TxtDDDCel.Text;
                alu.DddTel = TxtDDDFone.Text;
                alu.Email = TxtEmail.Text;
                alu.Endereco = TxtEndereco.Text;
                alu.EstadoCivil = ddlEstadoCivil.SelectedValue;
                alu.Genero = ddlGenero.SelectedValue;
                //alu.Instituicao = TxtInstituicao.Text;
                alu.Mae = TxtMae.Text;
                alu.Nacionalidade = TxtNacionalidade.Text;
                alu.Naturalidade = TxtNaturalidade.Text;
                alu.Nome = TxtNome.Text;

                if (txtDataNasc.Text != string.Empty)
                    if (Convert.ToDateTime(txtDataNasc.Text) >= DateTime.Now.Date)
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Data de expedição não pode ser maior que a data atual!"), true);
                        txtDataNasc.Text = string.Empty;
                    }
                    else
                        alu.DataNascimento = Convert.ToDateTime(txtDataNasc.Text.Trim());
                else
                    txtDataNasc.Text = string.Empty;

                if (TxtNumero.Text != string.Empty)
                    alu.Numero = Convert.ToInt32(TxtNumero.Text);
                else
                    alu.Numero = 0;
                alu.OrgaoExpedidor = TxtOrgaoExpedidor.Text;
                alu.Pai = TxtPai.Text;
                alu.Profissao = TxtProfissao.Text;
                alu.Rg = TxtRG.Text;
                alu.Situacao = ddlSituacao.SelectedValue;
                alu.Telefone = TxtTelefone.Text;
                alu.UfEndereco = ddlUF.SelectedValue;
                alu.UfNaturalidade = ddlUFNaturalidade.SelectedValue;
                alu.UfRg = ddlUFRG.SelectedValue;

                if (btnConfirmar.CommandName == "Incluir")
                {
                    if (ControlClass.CNAluno.inserirAluno(alu, usuario))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                        carregarAlunos();
                        pnlEdicao.Visible = false;
                        pnlConsulta.Enabled = true;
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                    }
                }
                else if (btnConfirmar.CommandName == "Alterar")
                {
                    alu.Matricula = Convert.ToInt32(ViewState["MATRICULA"]);
                    if (ControlClass.CNAluno.alterarAluno(alu, usuario))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoAlterar, "")), true);
                        carregarAlunos();
                        pnlEdicao.Visible = false;
                        pnlConsulta.Enabled = true;
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                    }
                }
            }
            catch
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroSimples, "")), true);
            }
        }

        //protected void listarAnos()
        //{
        //    ddlAnoConclusao.Items.Clear();
        //    for (int i = 1990; i <= DateTime.Now.Year; i++)
        //    {
        //        ddlAnoConclusao.Items.Add(i.ToString());
        //    }
        //    ddlAnoConclusao.SelectedValue = DateTime.Now.Year.ToString();
        //}

        protected void gvwPesquisa_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                Aluno aluno = new Aluno();
                int index = int.Parse((String)e.CommandArgument);
                aluno.Matricula = Convert.ToInt32(gvwPesquisa.DataKeys[index]["MATRICULA"].ToString());
                string usuario = User.Identity.Name;

                if (e.CommandName == "Alterar")
                {
                    aluno = ControlClass.CNAluno.carregarDadosAluno(aluno.Matricula);
                    pnlEdicao.Visible = true;
                    pnlConsulta.Enabled = false;
                    TxtBairro.Text = aluno.Bairro;
                    TxtCel.Text = aluno.Celular.Trim();
                    txtDataNasc.Text = (aluno.DataNascimento != null) ? Convert.ToDateTime(aluno.DataNascimento).ToShortDateString() : string.Empty;
                    TxtCEP.Text = aluno.Cep;
                    TxtCidade.Text = aluno.Cidade;
                    TxtComplemento.Text = aluno.Complemento;
                    TxtCPF.Text = aluno.Cpf;
                    //TxtCursoGraducao.Text = aluno.CursoGraduacao;
                    TxtDataExpedicao.Text = aluno.DataExpedicaoRg.ToString().Substring(0, 10);
                    TxtDDDCel.Text = aluno.Dddcel.Trim();
                    TxtDDDFone.Text = aluno.DddTel.Trim();
                    TxtEmail.Text = aluno.Email;
                    TxtEndereco.Text = aluno.Endereco;
                    //TxtInstituicao.Text = aluno.Instituicao;
                    TxtMae.Text = aluno.Mae;
                    TxtNacionalidade.Text = aluno.Nacionalidade;
                    TxtNaturalidade.Text = aluno.Naturalidade;
                    TxtNome.Text = aluno.Nome;
                    TxtNumero.Text = aluno.Numero.ToString();
                    TxtOrgaoExpedidor.Text = aluno.OrgaoExpedidor;
                    TxtPai.Text = aluno.Pai;
                    TxtProfissao.Text = aluno.Profissao;
                    TxtRG.Text = aluno.Rg;
                    TxtTelefone.Text = aluno.Telefone.Trim();
                    //ddlAnoConclusao.SelectedValue = aluno.AnoConclusao.ToString();
                    ddlEstadoCivil.SelectedValue = aluno.EstadoCivil;
                    ddlGenero.SelectedValue = aluno.Genero;
                    ddlSituacao.SelectedValue = aluno.Situacao;
                    ddlUFCad.SelectedValue = aluno.CodEstado.ToString();
                    ddlUFNaturalidade.SelectedValue = aluno.UfNaturalidade;
                    ddlUFRG.SelectedValue = aluno.UfRg;
                    ViewState["MATRICULA"] = aluno.Matricula;
                    btnConfirmar.CommandName = "Alterar";
                }
                else if (e.CommandName == "Excluir")
                {
                    aluno = ControlClass.CNAluno.carregarDadosAluno(aluno.Matricula);

                    if (ControlClass.CNAluno.excluirAluno(aluno, usuario))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoExcluir, "")), true);
                        carregarAlunos();
                        pnlEdicao.Visible = false;
                        pnlConsulta.Enabled = true;
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                        pnlEdicao.Visible = false;
                        pnlConsulta.Enabled = true;
                    }
                }
                else if (e.CommandName == "Relatorio")
                {
                    gerarRelDadosPessoais(index);
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("FK"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroChaveEstrangeira, "")), true);
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                pnlEdicao.Visible = false;
                pnlConsulta.Enabled = true;
            }
        }

        private void gerarRelDadosPessoais(int index)
        {
            try
            {
                int pMatricula = Convert.ToInt32(gvwPesquisa.DataKeys[index]["MATRICULA"]);
                DataTable dtImp = ControlClass.CNAluno.getDadosPessoaisAluno(pMatricula);
                if (dtImp.Rows.Count == 0)
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('Não há registros à serem impressos!', function() {});", true);
                }
                else
                {
                    ReportViewer ReportViewer1 = new ReportViewer();
                    ReportViewer1.Visible = true;
                    ReportViewer1.ProcessingMode = ProcessingMode.Local;
                    LocalReport relatorio = ReportViewer1.LocalReport;
                    relatorio.ReportPath = Server.MapPath(@"~/Relatorios/relDadosPessoaisAluno.rdlc");
                    ReportViewer1.Reset();

                    ReportDataSource rds1 = new ReportDataSource();
                    rds1.Name = "DataSet1";
                    rds1.Value = dtImp;

                    ReportDataSource rds2 = new ReportDataSource();
                    rds2.Name = "DataSet2";
                    rds2.Value = ControlClass.CNParametros.getCabecalhoRelatorio();

                    relatorio.DataSources.Clear();
                    relatorio.DataSources.Add(rds1);
                    relatorio.DataSources.Add(rds2);
                    relatorio.Refresh();

                    #region Gerar PDF
                    Warning[] warn = null;
                    string[] streamids = null;
                    string mimeType = "application/pdf";
                    string encoding = string.Empty;
                    string extension = string.Empty;
                    byte[] byteViewer;

                    byteViewer = relatorio.Render("pdf", null, out mimeType, out encoding, out extension, out streamids, out warn);
                    Response.Buffer = true;
                    Response.Clear();
                    Response.ContentType = "application/pdf";
                    Response.AddHeader("content-disposition", "attachment; filename=DadosPessoais.pdf");
                    Response.BinaryWrite(byteViewer);
                    Response.Flush();

                    Response.End();
                    Response.ClearContent();
                    #endregion
                }
            }
            catch (Exception)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('Falha ao tentar gerar o relatório. Tente novamente!', function() {});", true);
            }
        }

        protected void gvwPesquisa_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton button = (ImageButton)e.Row.FindControl("ImgExcluir");
                button.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button3 = (ImageButton)e.Row.FindControl("ImgRelatorio");
                button3.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwPesquisa_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Alert de Confirmação
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Passando por todas as linhas
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
            #endregion
        }

        protected void btnConsultarCEP_Click(object sender, EventArgs e)
        {
            try
            {
                TrustX.DadosEndereco dadosEndereco = new TrustX.DadosEndereco();
                dadosEndereco = TrustX.Util.UtilForm.ObterDadosEndereco(TxtCEP.Text);
                if (dadosEndereco.Cidade != null)
                {
                    TxtCidade.Text = dadosEndereco.Cidade;
                    TxtBairro.Text = dadosEndereco.Bairro;
                    TxtEndereco.Text = dadosEndereco.Endereco;
                    ddlUF.SelectedValue = dadosEndereco.Estado;
                }
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, dadosEndereco.MsgRetorno)), true);
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Falha inesperada! " + ex.Message.ToString()), true);
            }
        }

        protected void TxtCPF_TextChanged(object sender, EventArgs e)
        {
            if ((TxtCPF.Text != string.Empty) & (btnConfirmar.CommandName == "Incluir"))
            {
                if (ControlClass.CNAluno.cpfJaCadastrado(TxtCPF.Text))
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Já existe o registro de um aluno com o CPF informado. Favor verifique!"), true);
                    pnlEdicao.Visible = false;
                    pnlConsulta.Enabled = true;
                }
            }
        }

        protected void btnIncluirDocumentosPend_Click(object sender, EventArgs e)
        {
            pnlConsulta.Enabled = false;
            pnlDocumetos.Visible = true;
            pnlEdicao.Visible = false;
            TrustX.Util.UtilForm.LimparCampos(pnlDocumetos);

            carregarDocumentos();
            ViewState["MATRICULA"] = gvwPesquisa.SelectedDataKey["MATRICULA"].ToString();
        }

        private void carregarDocumentos()
        {
            try
            {
                int pMatricula = Convert.ToInt32(gvwPesquisa.SelectedDataKey["MATRICULA"].ToString());
                ddlDocumento.Items.Clear();
                ddlDocumento.DataSource = ControlClass.CNDocumento.listarDocumentos(pMatricula, true);
                ddlDocumento.DataTextField = "DESCRICAO";
                ddlDocumento.DataValueField = "ID_DOCUMENTO";
                ddlDocumento.DataBind();

                gvwDocPendente.DataSource = ControlClass.CNDocumento.obterDocumentosXAluno(pMatricula);
                gvwDocPendente.DataBind();
            }
            catch (Exception e)
            {
                if (e.Message.Contains("Referência"))
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "É necessário selecionar um aluno!"), true);
                }
            }            
        }

        protected void btnCancelarDoc_Click(object sender, EventArgs e)
        {
            pnlDocumetos.Visible = false;
            pnlEdicao.Visible = false;
            pnlConsulta.Enabled = true;
        }

        protected void btnIncluirDoc_Click(object sender, EventArgs e)
        {
            try
            {
                int pMatricula = Convert.ToInt32(gvwPesquisa.SelectedDataKey["MATRICULA"].ToString());
                string pEmail = gvwPesquisa.SelectedRow.Cells[4].Text;
                if (ControlClass.CNDocumento.inserirDocumentoPendente(pMatricula, Convert.ToInt32(ddlDocumento.SelectedValue)))
                {
                    #region Formato Email
                    string corpoEmail = string.Format(@"<html>
                                                <head>
                                                    <title>AcadPos -  Pendência de Documentos</title>
                                                </head>
                                                <body style='font-family:Verdana; font-size:10pt;'>
                                                    <b>Portal de Serviços - AcadPos</b><br />
                                                    <p>O AcadPos recebeu um registro de pendência relacionado à um ou mais documentos referente a sua matrícula.</p>
                                                    <p>Favor regularize sua situação o mais breve possível!</p>
                                                    <p>Pendência:&nbsp;&nbsp;<b>{0}</b><br /></p>
                                                    <br />
                                                    <br />
                                                 </body>
                                                </html>", ddlDocumento.SelectedItem.Text);
                    #endregion
                    TrustX.IO.Suporte.EnviarEmail(pEmail, "Pendência de Documento", corpoEmail, string.Empty);
                    carregarDocumentos();
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Pendência de documento incluída com sucesso!"), true);
                }
                else
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Falha inesperada! " + ex.Message.ToString()), true);
            }

        }

        protected void gvwDocPendente_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton button = (ImageButton)e.Row.FindControl("ImgRemover");
                button.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwDocPendente_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Alert de Confirmação
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Passando por todas as linhas
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Remover")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja remover esta pendência?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
            #endregion
        }

        protected void gvwDocPendente_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                int index = int.Parse((String)e.CommandArgument);
                int pCodDoc = Convert.ToInt32(gvwDocPendente.DataKeys[index]["ID_DOCUMENTO"].ToString());
                int pMatricula = Convert.ToInt32(ViewState["MATRICULA"]);
                string pEmail = gvwPesquisa.SelectedRow.Cells[4].Text;
                string documento = gvwDocPendente.Rows[index].Cells[1].Text;
                if (e.CommandName == "Remover")
                {
                    if (ControlClass.CNDocumento.removerPendenciaDocumento(pMatricula, pCodDoc))
                    {
                        #region Formato Email
                        string corpoEmail = string.Format(@"<html>
                                                <head>
                                                    <title>AcadPos -  Quitação de Pendência de Documentos</title>
                                                </head>
                                                <body style='font-family:Verdana; font-size:10pt;'>
                                                    <b>Portal de Serviços - AcadPos</b><br />
                                                    <p>O AcadPos recebeu um registro de quitação relacionado à um ou mais documentos referente ao seu cadastro que encontrava-se pendente.</p>
                                                    <p>Obrigado por regularizar a sua situação!</p>
                                                    <p>Documento entregue:&nbsp;&nbsp;<b>{0}</b><br /></p>
                                                    <br />
                                                    <br />
                                                 </body>
                                                </html>", documento);
                        #endregion
                        TrustX.IO.Suporte.EnviarEmail(pEmail, "Quitação de Pendência de Documentos", corpoEmail, string.Empty);
                        carregarDocumentos();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Pendência removida com sucesso!"), true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                    }
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, ex.Message.ToString())), true);
                pnlEdicao.Visible = false;
                pnlConsulta.Enabled = true;
            }
        }

        protected void TxtBairro_TextChanged(object sender, EventArgs e)
        {

        }

        protected void btnTitulacao_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = false;
            pnlTitulacoes.Visible = true;
            pnlConsulta.Enabled = false;
            TrustX.Util.UtilForm.LimparCampos(pnlTitulacoes);
            carregarTitulacoes();
        }

        private void carregarTitulacoes()
        {
            int matricula = Convert.ToInt32(gvwPesquisa.SelectedDataKey["MATRICULA"]);
            gvwTitulacoes.DataSource = ControlClass.CNAluno.getTitulacoes(matricula);
            gvwTitulacoes.DataBind();
        }

        protected void btnInserirTitulacao_Click(object sender, EventArgs e)
        {
            pnlCadastroTitulacao.Visible = true;
            TrustX.Util.UtilForm.LimparCampos(pnlCadastroTitulacao);
            btnConfirmarTitulacao.CommandName = "Incluir";
            carregarNiveisTitulacao();
            carregarAnoConclusao();
        }

        private void carregarAnoConclusao()
        {
            ddlAnoConclusao.Items.Clear();
            for (int i = 1960; i < DateTime.Now.Year + 1; i++)
            {
                ddlAnoConclusao.Items.Add(i.ToString());
            }
            ddlAnoConclusao.SelectedIndex = DateTime.Now.Year - 1960;
        }

        private void carregarNiveisTitulacao()
        {
            ddlNivelTitulacao.Items.Clear();
            DataTable dtTitulacoes = ControlClass.CNNivelTitulacao.listarNiveisTitulacao("");
            DataView dtTitualcoesAtivas = dtTitulacoes.AsDataView();
            dtTitualcoesAtivas.RowFilter = "SITUACAO = 'A' ";
            ddlNivelTitulacao.DataValueField = "ID_NIVEL_TITULACAO";
            ddlNivelTitulacao.DataTextField = "NIVEL";
            ddlNivelTitulacao.DataSource = dtTitualcoesAtivas.ToTable();
            ddlNivelTitulacao.DataBind();
        }

        protected void btnCancelarTitulacao_Click(object sender, EventArgs e)
        {
            pnlCadastroTitulacao.Visible = false;
        }

        protected void btnConfirmarTitulacao_Click(object sender, EventArgs e)
        {
            try
            {
                Titulacao titulacao = new Titulacao();
                titulacao.AnoConclusao = Convert.ToInt32(ddlAnoConclusao.SelectedValue);
                titulacao.CodNivelTitulacao = Convert.ToInt32(ddlNivelTitulacao.SelectedValue);
                titulacao.MatriculaAluno = Convert.ToInt32(gvwPesquisa.SelectedDataKey["MATRICULA"]);
                titulacao.Instituicao = TxtInstituicao.Text;
                titulacao.Titulo = TxtTitulacao.Text;
                titulacao.Situacao = ddlSituacaoTitulacao.SelectedValue;
                if (btnConfirmarTitulacao.CommandName == "Incluir")
                {
                    if (ControlClass.CNAluno.incluirTitulacao(titulacao))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                        pnlCadastroTitulacao.Visible = false;
                        carregarTitulacoes();
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroSimples, "")), true);
                        pnlCadastroTitulacao.Visible = false;
                    }
                }
                else if (btnConfirmarTitulacao.CommandName == "Alterar")
                {
                    titulacao.Codigo = Convert.ToInt32(ViewState["ID_ALUNO_TITULACAO"]);
                    if (ControlClass.CNAluno.alterarTitulacao(titulacao))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoAlterar, "")), true);
                        pnlCadastroTitulacao.Visible = false;
                        carregarTitulacoes();
                    }
                }
            }
            catch (Exception)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
            }
        }

        protected void gvwTitulacoes_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                Titulacao titulacao = new Titulacao();
                int index = int.Parse((String)e.CommandArgument);
                titulacao.Codigo = Convert.ToInt32(gvwTitulacoes.DataKeys[index]["ID_ALUNO_TITULACAO"].ToString());
                if (e.CommandName == "Alterar")
                {
                    titulacao = ControlClass.CNAluno.getDadosTitulacao(titulacao.Codigo);
                    carregarNiveisTitulacao();
                    carregarAnoConclusao();
                    pnlCadastroTitulacao.Visible = true;
                    pnlConsulta.Enabled = false;
                    ddlNivelTitulacao.SelectedValue = titulacao.CodNivelTitulacao.ToString();
                    ddlAnoConclusao.SelectedValue = titulacao.AnoConclusao.ToString();
                    ddlSituacaoTitulacao.SelectedValue = titulacao.Situacao;
                    TxtTitulacao.Text = titulacao.Titulo;
                    TxtInstituicao.Text = titulacao.Instituicao;
                    ViewState["ID_ALUNO_TITULACAO"] = titulacao.Codigo;
                    btnConfirmarTitulacao.CommandName = "Alterar";
                }
                else if (e.CommandName == "Excluir")
                {
                    if (ControlClass.CNAluno.excluirTitulacao(titulacao.Codigo))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoExcluir, "")), true);
                        carregarTitulacoes();
                        pnlCadastroTitulacao.Visible = false;
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroSimples, "")), true);
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("FK_TB_ALUNO_TITULACAO_TB_NIVEL_TITULACAO"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Esse registro não pode ser excluído, pois já existem cadastros que dependem do mesmo!"), true);
                else if (ex.Message.Contains("FK_TB_ALUNO_TITULACAO_TB_ALUNO"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Esse registro não pode ser excluído, pois já existem cadastros que dependem do mesmo!"), true);
                else if (ex.Message.Contains("FK"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Esse registro não pode ser excluído, pois já existem cadastros que dependem do mesmo!"), true);
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                pnlCadastroTitulacao.Visible = false;
                pnlConsulta.Enabled = true;
            }
        }

        protected void gvwTitulacoes_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton button = (ImageButton)e.Row.FindControl("ImgExcluir");
                button.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwTitulacoes_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Passando por todas as linhas
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }

            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[5].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[7].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[7].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[7].Visible = false;
            }
            #endregion
        }

        protected void btnCancelarInclusaoTitulacao_Click(object sender, EventArgs e)
        {
            pnlCadastroTitulacao.Visible = false;
            pnlTitulacoes.Visible = false;
            pnlConsulta.Enabled = true;
            gvwPesquisa.SelectedIndex = -1;
            btnTitulacao.Visible = false;
            btnIncluirDocumentosPend.Visible = false;
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregarAlunos();
        }

    }
}